Exibi os números primos de um numero recebido pelo usuário, sem estrutura de repetição

Publicado por Edmar Wantuil (última atualização em 22/11/2011)

[ Hits: 1.968 ]

Homepage: wantuil.com

Download 5223.primos.c




Escrevi esse código para testar os números primos <= de um numero recebido pelo usuário.
Economizado o máximo de processos possíveis e sem utilizar estrutura de repetição apenas recursividade.

  



Esconder código-fonte

/*
   Feito por Edmar Wantuil Silva Júnior
   Em 14 de novembro de 2011
*/

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

//Função testa se é primo ele testa até encrontar um divisor o achando ele para o teste, pois já saberemos que ele é primo
int testa_primo(int numero, int divisor)
{
   //Ira testar somente até a metade do numero pois sabemos que após a metade do nuemro so existe o proprio numero como divisor
   if((numero / 2) < divisor)
      return 0;
   //Se achar qualquer divisor o teste irá parar pois o numero não é mais primo
   if(numero % divisor == 0)
      return 1;   
   else
      return testa_primo(numero,divisor + 1);
}

//Essa função chama a função testa primo e retorna true caso primo
bool primo(numero)
{
   //vamos passar o numero 2 como o primeiro divisor pois sabemos que todos os numeros são divisiveis assim se retornar 0 ele sera primo
   if(testa_primo(numero,2) == 0)
      return true;
   else
      return false;
}

//Essa função chama ela mesma até numero = cont
void primos(int numero, int cont)
{
   if(primo(cont) == true)
      printf("%d\n", cont);
   if(numero > cont)
      primos(numero, cont + 1);
   return;
}

//Função principal
int main()
{
   int numero= 0;
   printf("Numero: ");
   scanf("%d",&numero);
   primos(numero, 1);
   primo(numero);
   return 0;
}

Scripts recomendados

C split

Cálculo de Fatorial usando Loop

Maior ou menor

Jogo Campo Minado

Calcular dia da semana a partir de uma data sugerida


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts